import config from "../config/index.js"
let {BASE_URL} = config

//超过时间
const TimeOut = 60000
const request = {
	get:null,
	post:null
}

const headerConfg = {
	timeout: TimeOut,
	// header: {
	// 	'Token': '获取token的方法' //自定义请求头信息
	// }
}
// 请求队列
const requestQuee =[]
request.get = (params) => {
	return new Promise((resolve, reject) => {
		
		let index = requestQueeCheck(params.url)
		
		requestQuee[index].requestTask = uni.request({
			...headerConfg,
			url: BASE_URL + params.url, //仅为示例，并非真实接口地址。
			data: params.data,
			success: (res) => {
				if(res.data.code===1){
					resolve(res.data)
				}else{
					uni.showToast({
						title: res.data.msg,
						icon:"none",
						duration: 2000
					});
					reject(res.data)
				}
				
			},
			fail: (err) => {
				reject(err)
			},
			complete:()=>{
				requestQuee.splice(index,1)
			}
		});
	})

}

request.post = (params) => {
	return new Promise((resolve, reject) => {
		let index = requestQueeCheck(params.url)
		requestQuee[index].requestTask = uni.request({
			...headerConfg,
			url: BASE_URL + params.url, //仅为示例，并非真实接口地址。
			data: params.data,
			method: "POST",
			success: (res) => {
				if(res.data.code===1){
					resolve(res.data)
				}else{
					uni.showToast({
						title: res.data.msg,
						icon:"none",
						duration: 2000
					});
					reject(res.data)
				}
				
			},
			fail: (err) => {
				reject(err)
			},
			complete:()=>{
				requestQuee.splice(index,1)
			}
		});
	})

}
/**
 * @param url string
 * @description 判断当前请求是否已经存在于队列中，如果已经存在，则终止之前的请求，对当前的请求进行发起，如果不存在则正常请求存入到队列中
 */
const requestQueeCheck = (url)=>{
	// 转换url 小写 
	url = url.toLocaleLowerCase()
	// 循环判断 查找当前url 是否在请求对列中 已经存在 
	for(let i=0;i<requestQuee;i++){
		// 如果已经存在 
		if(requestQuee[i].url===url){	
			// 将之前的请求 进行终止
			requestQuee[i].requestTask.abort()
			// 将之前的请求 在请求队列中进行删除
			requestQuee.splice(i,1)
		}
	}
	// 将当前请求 放到请求队列中 因为此时还没有发起请求 所以需要将 requestTask 设置为null
	requestQuee.push({requestTask:null,url:url})
	// 同时 requestTask 这个属性需要在 请求中 进行赋值，那么就需要将 当前请求的下标进行返回 方便下次操作
	return requestQuee.length-1
}
export default request